home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / calc / help / define < prev    next >
Text File  |  1995-07-17  |  3KB  |  69 lines

  1. Function definitions
  2.  
  3.     Function definitions are introduced by the 'define' keyword.
  4.     Other than this, the basic structure of a function is like in C.
  5.     That is, parameters are specified for the function within parenthesis,
  6.     the function body is introduced by a left brace, variables are
  7.     declared for the function, statements implementing the function
  8.     follow, and the function is ended with a right brace.
  9.  
  10.     There are some subtle differences, however.  The types of parameters
  11.     and variables are not defined at compile time, but instead are typed
  12.     at runtime.  Thus there is no definitions needed to distinguish
  13.     between integers, fractions, complex numbers, matrices, and so on.
  14.     Thus when declaring parameters for a function, only the name of
  15.     the parameter is needed.  Thus there are never any declarations
  16.     between the function parameter list and the body of the function.
  17.  
  18.     For example, the following function computes a factorial:
  19.  
  20.         define factorial(n)
  21.         {
  22.             local    ans;
  23.  
  24.             ans = 1;
  25.             while (n > 1)
  26.                 ans *= n--;
  27.             return ans;
  28.         }
  29.  
  30.     If a function is very simple and just returns a value, then the
  31.     function can be defined in shortened manner by using an equals sign
  32.     in place of the left brace.  In this case, the function declaration
  33.     is terminated by a newline character, and its value is the specified
  34.     expression.  Statements such as 'if' are not allowed.  An optional
  35.     semicolon ending the expression is allowed.  As an example, the
  36.     average of two numbers could be defined as:
  37.  
  38.         define average(a, b) = (a + b) / 2;
  39.  
  40.     Functions can be defined which can be very complex.  These can be
  41.     defined on the command line if desired, but editing of partial
  42.     functions is not possible past a single line.  If an error is made
  43.     on a previous line, then the function must be finished (with probable
  44.     errors) and reentered from the beginning.  Thus for complicated
  45.     functions, it is best to use an editor to create the function in a
  46.     file, and then enter the calculator and read in the file containing
  47.     the definition.
  48.  
  49.     The parameters of a function can be referenced by name, as in
  50.     normal C usage, or by using the 'param' function.  This function
  51.     returns the specified parameter of the function it is in, where
  52.     the parameters are numbered starting from 1.  The total number
  53.     of parameters to the function is returned by using 'param(0)'.
  54.     Using this function allows you to implement varargs-like routines
  55.     which can handle any number of calling parameters.  For example:
  56.  
  57.         define sc()
  58.         {
  59.             local s, i;
  60.  
  61.             s = 0;
  62.             for (i = 1; i <= param(0); i++)
  63.                 s += param(i)^3;
  64.             return s;
  65.         }
  66.  
  67.     defines a function which returns the sum of the cubes of all it's
  68.     parameters.
  69.